package com.example.im.util;

import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;

public class IPUtil {
	
	/**
	 * 获取本机IP地址，非127.0.0.1
	 * @return
	 */
	public static String getHostIp(){
       try{
          Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
          while (allNetInterfaces.hasMoreElements()){
                NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
                Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
              while (addresses.hasMoreElements()){
                   InetAddress ip = (InetAddress) addresses.nextElement();
                   if (ip != null 
                		   	&& ip instanceof Inet4Address
                         	&& !ip.isLoopbackAddress() //loopback地址即本机地址，IPv4的loopback范围是127.0.0.0 ~ 127.255.255.255
                         	&& ip.getHostAddress().indexOf(":")==-1){
                	  System.out.println("本机的IP = " + ip.getHostAddress());
                      return ip.getHostAddress();
                   } 
              	}
           }
       }catch(Exception e){
    	   e.printStackTrace();
       }
       return null;
    }
	
	
	public static void main(String[] args) {
		System.out.println(getHostIp());
    }
}
